SMB1360 battery charger and fuel gauge

SMB1360 is a single path switch-mode battery charger and
fuel gauge. The charger has a max current rating of 1.5A.
The fuel gauge uses voltage + coulomb counting to report
the state of charge.

The smb1360 interface is via I2C bus.

Required Properties:
- compatible:			Must be "qcom,smb1360-charger-fg"
- reg:				The device 7-bit I2C address.

Optional Properties:

- interrupts			This indicates the IRQ numbers of the GPIOs
				connected to the STAT and usb-id pins.
- interrupt-names		The irq names should be smb1360_stat_irq and
				smb1360_usb_id_irq.The stat irq is mandatory
				and usb_id irq is optional.
- pinctrl-names:		The state name of the pin configuration. Only
				support: "default".
- pinctrl-0:			The phandles of the pin configuration node in
				pinctrl for smb_int_pin and usb-id pin.
				For details of pinctrl properties, please refer to:
				"Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt"
- qcom,float-voltage-mv	 	Float Voltage in mV - the maximum voltage up to which
				the battery is charged. Supported range 3460V to 4360V
- qcom,charging-timeout		Maximum duration in minutes that a single charge
				cycle may last.  Supported values are: 0, 192, 384,
				768, and 1536.  A value of 0 means that no
				charge cycle timeout is used and charging can
				continue indefinitely.
- qcom,charging-disabled		Set this if charging should be disabled in the build
				by default. Useful in usecases where battery current
				needs to be profiled even when USB is present.
- qcom,recharge-thresh-mv	Specifies the minimum voltage drop in millivolts
				below the float voltage that is required in
				order to initiate a new charging cycle.
				Supported values are: 50, 100, 200 and 300mV.
- qcom,recharge-disabled		Disabled the auto-recharge function
- qcom,iterm-ma			Specifies the termination current to indicate end-of-charge.
				Possible values in mA - 25, 50, 75, 100, 125, 150, 175, 200
- qcom,iterm-disabled		Disables the termination current feature. This is a bool
				property.
- qcom,chg-inhibit-disabled	Disables the charger-inhibit function.
- qcom,disable-ov-ends-chg-cycle
				The boolean property to indicate if the ov-ends-charge-cycle
				feature is disabled. If the feature is disabled, charging
				could be resumed from battery OV (over voltage) status; otherwise,
				charging cycle will be terminated after battery OV event and
				won't be resumed until disable/enable charging.
- qcom,batt-id-disabled		Disabled the batt-id function. Doing this will
				disable the ability of RID based battery profile selection.
- qcom,fg-delta-soc		The delta in SOC which will generate an interrupt
- qcom,fg-soc-max		SOC value (max) at which an interrupt is generated.
				This can be used to alert the system when the
				battery reaches a specific (maximum) SOC value.
- qcom,fg-soc-min		SOC value (min) at which an interrupt is generated.
				This can be used to alert the system when the
				battery reaches a specific (minimum) SOC value.
- qcom,fg-voltage-min-mv	The minimum volatge at which an interrupt is generated.
				This can be used as an alert mechanism.
- qcom,fg-voltage-empty-mv	The voltage which indicates the battery is empty.
- qcom,thermal-mitigation:	Array of input current limit values for different
				system thermal mitigation level.
- qcom,stat-pulsed-irq:		A boolean flag to indicate the state-irq pin will generate pulse
				signal when interrupt happened. If this property is not specified,
				the default configuration is static level irq.
- qcom,shdn-after-pwroff:	A bool property to configure smb1360 for shutdown at power-off.
- qcom,empty-soc-disabled:	A bool property to indicate whether stop updating empty_soc flag.
				System reports 0% SOC when empty_soc being set.
- qcom,awake-min-soc		A bool property to indicate whether the system is prevented from
				sleeping when SOC is under the min_soc threshold.
- qcom,batt-profile-select	A boolean flag to indicate of battery-profile
				selection is enabled.
- qcom,profile-a-rid-kohm	The battery-ID resistor (RID) in Kohm supported by
				profile-A of SMB1360. This should be specified
				if 'batt-profile-select' is defined.
- qcom,profile-b-rid-kohm	The battery-ID resistor (RID) in Kohm supported by
				profile-B of SMB1360. This should be specified
				if 'batt-profile-select' is defined.
- qcom,batt-id-vref-uv		The reference voltage on the battery-ID line
				specified in micro-volts.
- qcom,batt-id-rpullup-kohm	The pull-up resistor connected on the battery-ID
				(vref) line.
- qcom,smb1360-vadc		VADC device phandle (used for reading the RID)
- qcom,fg-batt-capacity-mah	The new battery capacity to be supported.
				This updates the ACTUAL and NOMINAL CAPACITY
				of the profile.
- qcom,fg-cc-soc-coeff		The CC_TO_SOC_COEFF of the new battery capacity.
				This is updated only if 'fg-batt-capacity-mah'
				is specified. This value is calculated from the
				batt-capacity and then encoded as floating number.
				cc_soc_coeff = HALF_ENCODING(8192 / batt-capacity)
- qcom,fg-cutoff-voltage-mv	This is the minimum allowed system voltage. The
				FG will report SOC = 0 at this volatge. This
				value is in mv.
- qcom,fg-iterm-ma		This is termination current at which the
				Monotonic SOC reports 100. The value passed here
				is negated in the driver (assuming that the iterm
				is always -ve). This value is in mA.
- qcom,fg-ibatt-standby-ma	This is the minimum current value for the SOC to
				be above 0% at the cutoff voltage. This value
				is in mA.
- qcom,fg-cc-to-cv-mv		This is the voltage at which the FG transitions
				from CC to CV. This value should never be
				higher than the float volatge. Its in mV.
- qcom,thermistor-c1-coeff	This is the NTC thermistor C1 coeff for the
				thermistor inside the battery. This value is
				16-bit float encoded value determined from the
				NTC-c1_coeff mapping.
- qcom,otg-batt-curr-limit	This property defines the current threshold draw
				from battery when device working at OTG mode.
				The possible values are: 350, 550, 950, 1500mA.
- qcom,fg-auto-recharge-soc	This property defines the auto recharging SOC threshold.
- qcom,min-icl-100ma		A bool property to set the minimum ICL current
				to 100mA. If this property is not set the minimum
				ICL is set to 500mA in all the scenarios.
- qcom,config-hard-thresholds	This property indicates if cold and hot thresholds need be modified.
				If it's not defined, default temp thresholds will be used. If this
				defined, it's required to specify the "qcom,hot-bat-decidegc" and
				"qcom,cold-bat-decidegc" values. If this defined, the serial properties
				(qcom,otp-hard-jeita-config, qcom,otp-hot-bat-decidegc,
				qcom,otp-cold-bat-decidegc) mustn't be defined.
- qcom,hot-bat-decidegc		Hot battery temperature in decidegC. This property should only be
				defined when "qcom,config-hard-thresholds" defined, and the value
				must be out of range [0, 55].
- qcom,cold-bat-decidegc	Cold battery temperature in decidegC. This property should only be
				defined when "qcom,config-hard-thresholds" defined, and the value
				must be out of range [0, 55].
- qcom,otp-hard-jeita-config	This property indicates if cold and hot thresholds need be modified.
				If it's not defined, default temp thresholds [0, 55] will be used.
				If this defined, it's required to specify the "qcom,otp-hot-bat-decidegc"
				and "qcom,otp-cold-bat-decidegc" values. If this is defined, the serial
				properties (qcom,config-hard-thresholds, qcom,hot-bat-decidegc,
				qcom,cold-bat-decidegc) mustn't be defined.
- qcom,otp-hot-bat-decidegc	Hot battery temperature in decidegC. This property could only be
				defined when qcom,config-otp-hard-jeita exist.
- qcom,otp-cold-bat-decidegc	Cold battery temperature in decidegC. This property could only be
				defined when qcom,config-otp-hard-jeita exist.
- qcom,otp-hard-jeita-hysteresis This property contains two intergers to define the temperature
				hysteresis (in decidegC unit) for hard cold and hard hot.
				This property could only be defined when qcom,config-otp-hard-jeita exist.
- qcom,soft-jeita-supported	This property indicates whether soft jeita supported.
- qcom,warm-bat-decidegc	Warm battery temperature in decidegC. After hitting this threshold,
				"qcom,warm-bat-ma" defines maximum charging current and
				"qcom,warm-bat-mv" defines maximum target voltage.
				This property must be in range [0, 55] if needed.
- qcom,cool-bat-decidegc	Cool battery temperature in decidegC. After hitting this threshold,
				"qcom,cool-bat-ma" defines maximum charging current and
				"qcom,cool-bat-mv" defines maximum target voltage.
				This property must be in range [0, 55] if needed.
- qcom,warm-bat-mv		Maximum warm battery target voltage in milli-volts.
- qcom,cool-bat-mv		Maximum cool battery target voltage in milli-volts.
- qcom,warm-bat-ma		Maximum warm battery charge current in milli-amps.
- qcom,cool-bat-ma		Maximum cool battery charge current in milli-amps.
- qcom,fg-reset-at-pon		This is a bool property which indicates if the
				FG reset at power-on is enabled.
- qcom,fg-reset-thresold-mv	This value indicates the voltage threshold to
				reset the FG. This value is compared against
				the difference between in predicted voltage and
				current voltage. If this value is not specified
				a default value of 50mV is used. Unit is in milli-volts.
- qcom,rsense-10mhom		A bool property to indicate the Rsense resistor
				configuration. If set, the Rsense is 10mOhm else
				its 20mOhm.
- qcom,otg-fet-present		A bool property to indicate that a pMOS FET is present
				to boost the OTG current. On enabling this the max OTG
				current supported is 3x(qcom,otg-batt-curr-limit).
- qcom,otg-fet-enable-gpio	GPIO for enabling and disabling OTG FET.
				Following should be the PMIC gpio configuration:
				{
					qcom,mode = <1>; //Digital output
					qcom,pull = <0>; //Pull up configuration
					qcom,vin-sel = <0>; //Voltage level: VPH_PWR
					qcom,src-sel = <0>; //Pin function: GPIO
					qcom,master-en = <1>; //Enable
				}
				Please go through the documentation for PMIC gpio
				configuration details:
				Documentation/devicetree/bindings/gpio/qpnp-pin.txt
- qcom,usb-id-gpio		GPIO for usb-id detection.This property is mandatory
				if usb-id irq is specified.
- qcom,parallel-charging-enabled: A bool property which enables SMB1360 to
				operate in the parallel mode. SMB1360 acts
				as the primary charger.
- qcom,max-parallel-current-ma: This is the max charging current which can be
				drawn from the secondary charger. If this is
				not specified this value defaults to 540mA.
				The overall current charging current is
				1500mA(from SMB) + qcom,max-parallel-current-ma.

Example:
	i2c@f9967000 {
		smb1360-chg-fg@1b {
			compatible = "qcom,smb1360-chg-fg";
			reg = <0x1b>;
			interrupt-parent = <&spmi_bus>;
			interrupts = <0x00 0xcd 0>,
					<0 0xc3 0 3>;
			interrupt-names = "smb1360_stat_irq",
					"smb1360_usb_id_irq";
			pinctrl-names = "default";
			pinctrl-0 = <&smb_int_default>,
					<&usb_id_default>;

			/* battery-profile selection properties */
			qcom,batt-profile-select;
			qcom,smb1360-vadc = <&pm8916_vadc>;
			qcom,batt-id-vref-uv = <1800000>;
			qcom,batt-id-rpullup-kohm = <100>;
			qcom,profile-a-rid-kohm = <78>;
			qcom,profile-b-rid-kohm = <200>;

			/* battery capacity */
			qcom,fg-batt-capacity-mah = <4000>;
			qcom,fg-cc-soc-coeff = <0x8009>;

			qcom,fg-cutoff-voltage-mv = <3300>;
			qcom,fg-iterm-ma = <100>;
			qcom,fg-ibatt-standby-ma = <200>;
			qcom,fg-cc-to-cv-mv = <4180>;
			qcom,thermistor-c1-coeff = <0x86DB>;

			qcom,float-voltage-mv = <4200>;
			qcom,iterm-ma = <100>;
			qcom,charging-disabled;
			qcom,recharge-thresh-mv = <100>;
			qcom,fg-soc-max = <85>;
			qcom,fg-soc-min = <15>;
			qcom,fg-auto-recharge-soc = <99>;
			qcom,thermal-mitigation = <1500 700 300 0>;
			qcom,config-hard-thresholds;
			qcom,hot-bat-decidegc = <650>;
			qcom,cold-bat-decidegc = <(-100)>;
			qcom,soft-jeita-supported;
			qcom,warm-bat-decidegc = <450>;
			qcom,cool-bat-decidegc = <100>;
			qcom,otp-hard-jeita-config;
			qcom,otp-hot-bat-decidegc = <550>;
			qcom,otp-cold-bat-decidegc = <0>;
			qcom,otp-hard-jeita-hysteresis = <0, 50>;
			qcom,warm-bat-mv = <4100>;
			qcom,cool-bat-mv = <4100>;
			qcom,warm-bat-ma = <750>;
			qcom,cool-bat-ma = <750>;

			qcom,otg-batt-curr-limit = <950>;
			qcom,fg-reset-at-pon;

			qcom,otg-fet-present;
			qcom,otg-fet-enable-gpio = <&pm8916_gpios 3 0>;
			qcom,usb-id-gpio = <&pm8916_gpios 4 0>;
		};
	};
